home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / VerticalSlider.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  3.8 KB  |  203 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Event;
  6. import java.awt.Graphics;
  7.  
  8. public class VerticalSlider extends Slider {
  9.    private static final int BORDER_X = 10;
  10.    private static final int BORDER_Y = 15;
  11.    protected static final int TICK_WIDTH = 4;
  12.    private VerticalSliderTick[] tick;
  13.    private VerticalSliderThumb thumb = new VerticalSliderThumbBoth();
  14.  
  15.    public VerticalSlider() {
  16.       super.style = 2;
  17.       super.min = 1;
  18.       super.max = 10;
  19.       super.freq = 1;
  20.       super.prevPos = super.curPos = 0;
  21.       super.width = 175;
  22.       super.height = 50;
  23.       super.showBorder = true;
  24.       this.tick = null;
  25.    }
  26.  
  27.    public void setTickStyle(int var1) {
  28.       if (super.style != var1) {
  29.          super.style = var1;
  30.          switch (var1) {
  31.             case 0:
  32.                this.thumb = new VerticalSliderThumbLeft();
  33.                break;
  34.             case 1:
  35.                this.thumb = new VerticalSliderThumbRight();
  36.                break;
  37.             default:
  38.                this.thumb = new VerticalSliderThumbBoth();
  39.          }
  40.  
  41.          ((Component)this).invalidate();
  42.       }
  43.  
  44.    }
  45.  
  46.    public int getTickStyle() {
  47.       return super.style;
  48.    }
  49.  
  50.    public boolean mouseDown(Event var1, int var2, int var3) {
  51.       this.moveThumb(var3, true);
  52.       return true;
  53.    }
  54.  
  55.    public boolean mouseDrag(Event var1, int var2, int var3) {
  56.       this.moveThumb(var3, false);
  57.       return true;
  58.    }
  59.  
  60.    private void do_reshape(int var1, int var2) {
  61.       int var3 = 10;
  62.       int var4 = 15;
  63.       if (var1 < var3) {
  64.          var3 = var1 / 4;
  65.       }
  66.  
  67.       if (var2 < var4) {
  68.          var4 = var2 / 4;
  69.       }
  70.  
  71.       int var5 = var3;
  72.       int var6 = var1 - var3;
  73.       int var7 = var4;
  74.       int var8 = var2 - var4;
  75.       if (var3 == 0) {
  76.          var5 = 1;
  77.       }
  78.  
  79.       if (var6 == 0) {
  80.          var6 = 1;
  81.       }
  82.  
  83.       if (var4 == 0) {
  84.          var7 = 1;
  85.       }
  86.  
  87.       if (var8 == 0) {
  88.          var8 = 1;
  89.       }
  90.  
  91.       int var9 = (super.max - super.min) / super.freq + 1;
  92.       this.tick = new VerticalSliderTick[var9];
  93.       int var10 = (var8 - var7) / (var9 - 1);
  94.  
  95.       for(int var12 = 0; var12 < var9; ++var12) {
  96.          int var11 = var12 * var10;
  97.          this.tick[var12] = new VerticalSliderTick(var5, var6, var7 + var11, var11);
  98.       }
  99.  
  100.       this.thumb.resize(var6 - var5 - 4 - 1, var10 / 2);
  101.    }
  102.  
  103.    public void reshape(int var1, int var2, int var3, int var4) {
  104.       super.width = var3;
  105.       super.height = var4;
  106.       this.do_reshape(var3, var4);
  107.       super.reshape(var1, var2, var3, var4);
  108.    }
  109.  
  110.    protected void doMove(int var1, boolean var2) {
  111.       if (this.tick == null) {
  112.          super.prevPos = super.curPos = var1;
  113.       } else {
  114.          if (var1 >= this.tick.length) {
  115.             var1 = this.tick.length - 1;
  116.          }
  117.  
  118.          if (var1 != super.curPos || var2) {
  119.             super.prevPos = super.curPos;
  120.             super.curPos = var1;
  121.             this.paint(((Component)this).getGraphics());
  122.             ((Component)this).postEvent(new Event(this, 1001, new Integer(super.curPos * super.freq + super.min)));
  123.          }
  124.  
  125.       }
  126.    }
  127.  
  128.    private void moveThumb(int var1, boolean var2) {
  129.       if (this.tick.length > 1) {
  130.          int var3 = this.tick[1].y - this.tick[0].y;
  131.          if (var3 == 0) {
  132.             return;
  133.          }
  134.  
  135.          int var4 = (var1 - this.tick[0].y) / var3;
  136.          if (var4 < 0) {
  137.             var4 = 0;
  138.          }
  139.  
  140.          if ((var1 - this.tick[0].y) % var3 > var3 / 2) {
  141.             ++var4;
  142.          }
  143.  
  144.          this.doMove(var4, var2);
  145.       }
  146.  
  147.    }
  148.  
  149.    public void paint(Graphics var1) {
  150.       if (this.tick.length != 0) {
  151.          var1.clipRect(0, 0, super.width, super.height);
  152.          this.thumb.draw(var1, this.tick[super.curPos]);
  153.          if (super.prevPos != super.curPos) {
  154.             this.thumb.clip(var1, this.tick[super.prevPos]);
  155.          }
  156.  
  157.          var1.setColor(((Component)this).getBackground());
  158.          var1.fillRect(0, 0, super.width, super.height);
  159.          var1.setColor(Color.black);
  160.          int var6 = super.width - 1;
  161.          int var7 = super.height - 1;
  162.          if (super.showBorder) {
  163.             var1.drawRect(0, 0, var6, var7);
  164.          }
  165.  
  166.          for(int var9 = 0; var9 < this.tick.length; ++var9) {
  167.             boolean var8 = var9 == 0 || var9 == this.tick.length - 1;
  168.             VerticalSliderTick var2 = this.tick[var9];
  169.             if (super.style == 0 || super.style == 2) {
  170.                var1.drawLine(var2.x0 + (var8 ? 0 : 1), var2.y, var2.x0 + 4, var2.y);
  171.             }
  172.  
  173.             if (super.style == 1 || super.style == 2) {
  174.                var1.drawLine(var2.x1 - 4, var2.y, var2.x1 - (var8 ? 0 : 1), var2.y);
  175.             }
  176.          }
  177.  
  178.          VerticalSliderTick var10 = this.tick[0];
  179.          int var3 = (var10.x1 + var10.x0) / 2;
  180.          int var4 = var10.y - 5;
  181.          int var5 = this.tick[this.tick.length - 1].y + 5;
  182.          var1.drawLine(var3, var4, var3, var5);
  183.          var1.setColor(Color.gray);
  184.          var1.drawLine(var3 - 1, var5 + 1, var3 - 1, var4 - 1);
  185.          var1.drawLine(var3 - 1, var4 - 1, var3 + 1, var4 - 1);
  186.          var1.setColor(Color.lightGray);
  187.          var1.drawLine(var3 + 1, var4, var3 + 1, var5 + 1);
  188.          var1.drawLine(var3 + 1, var5 + 1, var3, var5 + 1);
  189.          var1.setColor(Color.white);
  190.          var1.drawLine(var3 + 2, var4 - 1, var3 + 2, var5 + 2);
  191.          var1.drawLine(var3 + 2, var5 + 2, var3 - 1, var5 + 2);
  192.          var1.clipRect(0, 0, super.width, super.height);
  193.          this.thumb.draw(var1, this.tick[super.curPos]);
  194.          super.prevPos = super.curPos;
  195.       }
  196.    }
  197.  
  198.    public void validate() {
  199.       super.validate();
  200.       this.do_reshape(super.width, super.height);
  201.    }
  202. }
  203.